package com.ktwlsoft.archivemanage.domain.dao.repository;

import com.alibaba.fastjson.JSONObject;
import com.ktwlsoft.archivemanage.domain.dao.entity.Account;
import com.ktwlsoft.archivemanage.payload.role.EditRoleRequest;
import com.ktwlsoft.archivemanage.payload.security.AccountResponse;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * account--账号
 *
 * @author zhuhe on 2019-10-24 14:19:38
 * @version 1.0
 */
@Mapper
public interface IAccountMapper {

    /**
     * 查询列表 on 2019-10-24 14:19:38
     *
     * @param account account
     * @return List<Account>
     */
    List<Account> findList(Account account);

    /**
     * 根据id查询信息 on 2019-10-24 14:19:38
     *
     * @param id id
     * @return Account
     */
    Account getById(Long id);

    /**
     * 根据部门ID查询信息 on 2019-10-24 14:19:38
     *
     * @param departmentId 部门ID
     * @return Account
     */
    List<Account> getByDepartmentId(Long departmentId);

    /**
     * 根据用户账号查询信息 on 2019-10-24 14:19:38
     *
     * @param userName userName
     * @return Account
     */
    Account getByUserName(String userName);

    /**
     * 根据电话号码查询数据 on 2019/10/31 12:01
     *
     * @param teleNum teleNum
     * @return Account
     */
    List<Account> getByTeleNum(String teleNum);

    Account findByUserNameOrPhone(String nameOrPhone);

    /**
     * 根据id删除信息 on 2019-10-24 14:19:38
     *
     * @param id id
     * @return int
     */
    int deleteById(Long id);

    /**
     * 根据id集合批量删除信息 on 2019-10-24 14:19:38
     *
     * @param ids ids
     * @return int
     */
    int deleteByIds(List<Long> ids);


    /**
     * 插入 on 2019-10-24 14:19:38
     *
     * @param account account
     * @return int
     */
    int insert(Account account);

    /**
     * 更新 on 2019-10-24 14:19:38
     *
     * @param account account
     * @return int
     */
    int update(Account account);

    /**
     * 批量更新 on 2019/6/12 9:35
     *
     * @param jsonObject jsonObject
     * @return int
     */
    int manyUpdate(JSONObject jsonObject);

    /**
     * 检查唯一 on 2019/10/28 11:46
     *
     * @param account account
     * @return List<Account>
     */
    List<Account> checkUnique(Account account);

    AccountResponse findByUserName(String userName);

    int updateRoleInfo(EditRoleRequest request);

    /**
     * 更改老师介绍信息
     *
     * @param account
     * @return int
     */
    int updateIntroduce(Account account);

    /**
      * 查询列表排除立档单位 on 2020/3/17 9:43
      *
      * @param account account
      * @return List<Account>
      */
    List<Account> findListNotUnit(Account account);
}
